Описание структуры JSON-конфигурации для отбора
JSON-конфигурация содержит поля type и value.
Поле type указывает тип фильтра для документа. Поле value указывает значения, которые должны содержаться в узле.
Структура и содержимое поля value зависят от типа фильтра.
| Тип фильтра | Описание |
| attribute | Отбор атрибутов с указанными свойствами. |
| hasattribute | Отбор узлов-элементов, содержащих атрибуты с указанными свойствами. |
| elementname | Отбор узлов-элементов, имя тега которых соответствует указанному шаблону. |
| not | Отбор узлов, не соответствующих указанному фильтру. |
| parent | Отбор узлов, родитель которых содержит указанные свойства. |
| intersection | Отбор узлов, отвечающих условиям нескольких фильтров одновременно. |
| union | Отбор узлов, отвечающих условиям одного из указанных фильтров. |
| nodeType | Отбор узлов по типу DOM. |
attribute
Отбор атрибутов с указанными свойствами.
К значениям данного фильтра применимы операции:
- nameequals - сравнение по имени атрибута,
- valueequals - сравнение по значению атрибута,
- namestartswith - имя атрибута должно начинаться с указанного значения,
- valuestartswith - значение атрибута должно начинаться с указанного значения,
- namecontains - имя атрибута должно содержать значение,
- valuecontains - значение атрибута содержит указанное значение,
- namematchesregex - имя атрибута соответствует выражению,
- valuematchesregex - значение атрибута соответствует выражению.
Пример:
| { "type": "attribute", "value": { "value": "width", "operation": "nameequals" } } |
Во всех узлах документа будут отобраны атрибуты "width".
Все типы фильтров
hasattribute
Отбор узлов-элементов, содержащих атрибуты с указанными свойствами.
К значениям данного фильтра применимы операции:
- nameequals - сравнение по имени атрибута,
- valueequals - сравнение по значению атрибута,
- namestartswith - имя атрибута должно начинаться с указанного значения,
- valuestartswith - значение атрибута должно начинаться с указанного значения,
- namecontains - имя атрибута должно содержать значение,
- valuecontains - значение атрибута содержит указанное значение,
- namematchesregex - имя атрибута соответствует выражению,
- valuematchesregex - значение атрибута соответствует выражению.
Пример:
| { "type": "attribute", "value": { "value": "([a-z]*bord[a-z]*)", "operation": "namematchesregex" } } |
Будут отобраны все элементы, атрибуты которых соответствуют заданному выражению ([a-z]*bord[a-z]*).
Все типы фильтров
elementname
Отбор узлов-элементов, имя тега которых соответствует указанному шаблону.
К значениям данного фильтра применимы операции:
- equals - сравнение на равенство,
- startswith - значение должно начинаться с выражения,
- contains - значение должно содержать выражение,
- matchesregex - имя элемента соответствует выражению.
Пример:
| { "type": "elementname", "value": { "value": "di", "operation": "startswith" } } |
Будут отобраны узлы "dir" и "div".
Все типы фильтров
not
Отбор узлов, не соответствующих указанному фильтру.
Пример:
|
{ |
Будут отобраны узлы, имя тега которых не содержит "di".
parentОтбор узлов, родитель которых содержит указанные свойства.
Пример:
|
{ |
Будут отобраны узлы, родителем которых является элемент "div".
Все типы фильтров
intersection
Отбор узлов, отвечающих условиям нескольких фильтров одновременно.
Пример:
| { "type": "intersection", "value": [{Фильтр1}, {Фильтр2}] } |
Где {Фильтр1}, {Фильтр2} - любые из доступных фильтров.
Будут отобраны узлы, удовлетворяющие условиям обоих фильтров.
Все типы фильтров
union
Отбор узлов, отвечающих условиям одного из указанных фильтров.
Пример:
| { "type": "union", "value": [{ Фильтр1}, { Фильтр2}] } |
Где {Фильтр1}, {Фильтр2} - любые из доступных фильтров.
Будут отобраны узлы, отвечающие либо отбору {Фильтр1}, либо отбору {Фильтр2}.
Все типы фильтров>
Для любого узла фильтр будет возвращать true или false, в зависимости от значения value.
Пример:
| { "type": "parent", "value": { "type": "const", "value": true } } |
С помощью такого отбора можно узнать, существует ли предок (parent) у узла.
Все типы фильтров
nodeType
Отбор узлов по типу DOM. Можно указать следующие типы узлов:
- element,
- attribute,
- text,
- cdata,
- entityreference,
- entity,
- processinginstruction,
- comment,
- document,
- documenttype,
- documentfragment,
- notation,
- xpathnamespace.
Пример:
| { "type": "nodetype", "value": { "value": ["element", "text"] } } |
Будут отобраны узлы типа text.
Все типы фильтров